﻿using System.Data;
using System;

namespace Gestión_UTN.blimpl
{
    class paisblimpl : bl.paisbl
    {
        private static Gestión_UTN.da.paisda createPais = Gestión_UTN.factories.dafactory.createPais();

        public paisblimpl()
        {

        }
        public bool SavePais(string nombre)
        {
            bool ingresado = false;

            try
            {
                ingresado = (!nombre.Equals(""))
                    ? createPais.SavePais(nombre)
                    : false;
            }
            catch (exceptions.daexception ex)
            {
                ingresado = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                ingresado = false;
                throw new exceptions.blexception(ex.Message);
            }

            return ingresado;
        }

        public bool DeletePais(string nombre)
        {
            bool eliminado = false;

            try
            {
                eliminado = (!nombre.Equals(""))
                    ? createPais.DeletePais(nombre)
                    : false;
            }
            catch (exceptions.daexception ex)
            {
                eliminado = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                eliminado = false;
                throw new exceptions.blexception(ex.Message);
            }

            return eliminado;
        }

        public bool ModifyPais(string nombre_anterior, string nombre)
        {
            bool modificado = false;

            try
            {
                modificado = (!nombre.Equals("") && !nombre_anterior.Equals(""))
                    ? createPais.ModifyPais(nombre, nombre)
                    : false;
            }
            catch (exceptions.daexception ex)
            {
                modificado = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                modificado = false;
                throw new exceptions.blexception(ex.Message);
            }

            return modificado;
        }

        public System.Data.DataTable FindAllPaises()
        {
            DataTable paises = null;

            try
            {
                paises = createPais.FindAllPaises();
            }
            catch (exceptions.daexception ex)
            {
                paises = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                paises = null;
                throw new exceptions.blexception(ex.Message);
            }

            return paises;
        }

        public bo.Paisbo FindPaisByName(string nombre)
        {
            bo.Paisbo pais = null;

            try
            {
                Entities.Pais p = (!nombre.Equals(""))
                    ? createPais.FindPaisByName(nombre)
                    : null;

                pais = (null != p)
                    ? new bo.Paisbo(p.Pai_id, p.Nombre)
                    : null;
            }
            catch (exceptions.daexception ex)
            {
                pais = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                pais = null;
                throw new exceptions.blexception(ex.Message);
            }

            return pais;
        }

        public bo.Paisbo FindPaisById(int id)
        {
            bo.Paisbo pais = null;

            try
            {
                Entities.Pais p = (0 != id)
                    ? createPais.FindPaisById(id)
                    : null;

                pais = (null != p)
                    ? new bo.Paisbo(p.Pai_id, p.Nombre)
                    : null;
            }
            catch (exceptions.daexception ex)
            {
                pais = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                pais = null;
                throw new exceptions.blexception(ex.Message);
            }

            return pais;
        }
    }
}
